package ProyectoX;

import java.util.Random;

import javax.swing.ImageIcon;

/**
 * Clase public power up extiende a dibujable
 *
 */
public class PowerUp extends Dibujable{
	protected Nivel MiNivel;
	protected NaveEnemiga NaveEnem;
	protected boolean activar ;
	
	/**
	 * Constructor, inicializa los atributos y asigna una imagen al objeto
	 */
	public PowerUp(Nivel n, NaveEnemiga ne) {
		NaveEnem = ne;
		MiNivel = n;
		activar = true;
		setIcon(new ImageIcon(getClass().getClassLoader().getResource("Imagenes/Antiparras.png")));
	}

	
	/**
	 * Si no fue activado entonces aumenta el nivel del arma de la nade jugador.Setea activar en false
	 */
	public void serActivado(){
		if (activar){
			NaveJugador jugador = MiNivel.obtenerNaveJugador();
			
			jugador.AumentarNivelArma();
			activar = false;
		}
		
	}
	
	/**
	 * Si esta en pantalla entonces setea no visible a su imagen.
	 */
	public void serQuitado(){
		if (this.estaEnPantalla()){
			this.setVisible(false);
		}
		
	}
	
	/**
	 * Retorna verdadero si el objeto esta en pantalla y falso en caso contrario.
	 */
	public boolean estaEnPantalla(){
		boolean esta = false;
		if ((this.getX() < MiNivel.obtenerAnchoNivel()) && (this.getX()> 2)){
			if (this.getY() < MiNivel.obtenerAltoNivel() && this.getY()> 2)
				esta = this.isVisible();
		}
		return esta;
	}
	
	/**
	 * Mueve el objeto dependiento el numero pasado por parametro.
	 * si es 0, hacia la izquierda. Si es 1 hacia arriba. Si es 2 hacia la derecha y si es 3 hacia abajo.
	 */
	public void Mover(int i) {
		switch (i) {
		case 0:
			this.setLocation(this.getX() - 2,this.getY() );
			break;
		case 1:
			this.setLocation(this.getX() ,this.getY() -2);
			break;
		case 2:
			this.setLocation(this.getX() + 2,this.getY() );
			break;
		case 3:
			this.setLocation(this.getX() ,this.getY() + 2);
			break;
			
		}
	}

	/*
	 * Verifica si el power up colisiono con lanave jugador. De ser asi, es activado.
	 * de ser asi esta es atacada. Setea el puntaje y lo modifica en la pantalla.
	 */
	protected void Colisiones(){

		if(this.estaEnPantalla()){
			
			if(this.alcanzoObjeto(MiNivel.obtenerNaveJugador())){
				this.setVisible(false);
				this.serActivado();
			}				
		}
	}

	/**
	 * inicializa un entero con un random de 0 a 3 y llama con ese numero al metodo mover(i)
	 */
	public void Mover() {
		Random r = new Random();
		int p = r.nextInt(4);
		Mover(p);
	}

}
